/*
 * Copyright (c) 2023-2024 elsfs Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.elsfs.cloud.common.security.configurer;

import org.springframework.beans.factory.InitializingBean;

/**
 * 配置安全 servlet,
 *
 * @author zeng
 */
public abstract sealed class AbstractSecurityCustomConfiguration<T> implements InitializingBean
    permits AbstractReactiveSecurityCustomConfiguration,
        AbstractServletSecurityCustomConfiguration {

  /**
   * 退出配置
   *
   * @param http http
   */
  protected void autoConfigurationOauthLogout(T http) throws Exception {}

  /**
   * 添加安全的响应头
   *
   * @param http http
   * @throws Exception 配置异常
   */
  protected void addHttpSecurityHeaders(T http) throws Exception {}

  /**
   * 配置 认证的请求
   *
   * @param http http
   * @throws Exception 配置异常
   */
  protected void addHttpSecurityAuthorizeHttpRequests(T http) throws Exception {}

  /**
   * oath2Login 配置
   *
   * @param http h
   * @throws Exception e
   */
  protected void autoConfigurationOauthLogin(T http) throws Exception {}
}
